SQL-Lingua Franca

Um Abfragen nicht separat für Informix/Postgres entwickeln zu müssen, gibt es FreeMarker SQL-Lingua Franca[6] Makros.

 

Einfaches Beispiel:

Aufruf einer Prodedur

 

Informix

execute procedure sp_proc();

Postgres

select sp_proc();

 

 

 

FreeMarker

<@procedure  sp_proc/>;

 

wird transformiert à

Informix

execute procedure sp_proc();

Postgres

select sp_proc();

 

procedure ist ein FreeMarker Makro, das definiert ist in der Tabelle fm_templates, id "SQL_lingua franca"

 

<@informixnolog/>

wenn Informix als Datenbanksystem benutzt wird, wird der Zusatz with no log ausgegeben.

 

selectintotmp

Informix und Postgres unterscheiden sich darin, wie ein select into temp table aufgebaut ist.

Beispiel

Informix

select key,sum(betrag) from cob_busa where ... group by ?. into temp tmp_busa;

und

Postgres

select key,sum(betrag) into temp tmp_busa from cob_busa where ... group by ?;

 

Um dieses datenbankunabhängig zu halten, gibt es das Makro selectintotmp mit den parametern select (die Spalten), source (Quelltabelle/n) und target (Zieltabelle).

Eine gegebenenfalls nötige where-Bedingung und group by muss als "Body" innerhalb des selectintotmp-Aufrufs angegeben werden.

 

Die obigen Beispiele können mit FreeMarker mit folgendem Makroaufruf automatisch erzeugt werden.

 

<@selectintotmp select="key,sum(betrag)" source="cob_busa" target="tmp_busa">

where ... group by ..

</@selectintotmp>


Zur Superx-Homepage SuperX ist auch ein CampusSource-Projekt. Zur CampusSource-Homepage | Powered by FreeMarker Seite 29 / 102
Letzter Update: 17.06.2008
Impressum